package it.polimi.traveldream.ejb;



import it.polimi.traveldream.ejb.management.PackDTO;

import java.io.Serializable;

import javax.persistence.*;

import java.util.Date;
import java.util.List;


/**
 * The persistent class for the Pacchetti database table.
 * 
 */
@Entity
@NamedQueries({
	@NamedQuery(name="Pacchetti.findAll", query="SELECT p FROM Pacchetti p "),
	@NamedQuery(name="Pacchetti.findByName", query="SELECT p FROM Pacchetti p WHERE :nome IN (p.nome)"),
	@NamedQuery(name="Pacchetti.deleteById",query="DELETE FROM Pacchetti p WHERE ?1=p.idPacchetti"),
	@NamedQuery(name="Pacchetti.updateDispo", query="UPDATE Pacchetti p SET p.numeroPosti = p.numeroPosti - 1 WHERE p.idPacchetti = ?1 "),
	@NamedQuery(name="Pacchetti.findByCity", query="SELECT p FROM Pacchetti p WHERE ?1 IN (p.citta)"),
	@NamedQuery(name="Pacchetti.findById", query="SELECT p FROM Pacchetti p WHERE p.idPacchetti=?1"),
	@NamedQuery(name="Pacchetti.update", query="UPDATE Pacchetti p SET p.dataPartenza = :dataPartenza,"
			+ "p.dataArrivo = :dataArrivo, p.nome = :nome, p.citta = :citta, p.numeroPosti = :numPosti,"
			+ "p.prezzoTotale=:prezzo, p.escursione=:escursione, p.hotel=:hotel,"
			+ "p.voloAndata=:voloA, p.voloRitorno=:voloR WHERE p.idPacchetti = :id"),
	@NamedQuery(name="Pacchetti.disponibili",query="SELECT p FROM Pacchetti p WHERE p.numeroPosti > 0"),
	@NamedQuery(name="Pacchetti.dispCitta",query="SELECT p FROM Pacchetti p WHERE ?1 IN (p.citta) AND p.numeroPosti > 0")
})

public class Pacchetti implements Serializable {
	private static final long serialVersionUID = 1L;
	
	public static final String FIND_ALL = "Pacchetti.findAll";
	public static final String FIND_NAME = "Pacchetti.findByName";
	public static final String FINDBYID = "Pacchetti.findById";
	public static final String FINDBYCITY = "Pacchetti.findByCity";
	public static final String DELETE= "Pacchetti.deleteById";
	public static final String UPDDISP = "Pacchetti.updateDispo";
	public static final String DISP = "Pacchetti.disponibili";
	public static final String UPDPACC = "Pacchetti.update";
	public static final String DISPCIT = "Pacchetti.dispCitta";
	

	@Id
	@GeneratedValue(strategy=GenerationType.IDENTITY)
	private int idPacchetti;

	@Temporal(TemporalType.DATE)
	private Date dataArrivo;

	@Temporal(TemporalType.DATE)
	private Date dataPartenza;

	private String nome;
	
	private String citta;

	private int numeroPosti;

	private int prezzoTotale;

	//bi-directional many-to-one association to Escursione
	@ManyToOne
	@JoinColumn(name="Escursione")
	private Escursione escursione;

	//bi-directional many-to-one association to Hotel
	@ManyToOne
	@JoinColumn(name="Hotel")
	private Hotel hotel;

	//bi-directional many-to-one association to Volo
	@ManyToOne
	@JoinColumn(name="VoloAndata")
	private Volo voloAndata;

	//bi-directional many-to-one association to Volo
	@ManyToOne
	@JoinColumn(name="VoloRitorno")
	private Volo voloRitorno;

	
	public Pacchetti() {
	}
	
	public Pacchetti(PackDTO pacchetto, Hotel hotel, Volo voloA, Volo voloR, Escursione esc) {
		this.citta = pacchetto.getLuogo();
		this.dataArrivo = pacchetto.getDataArrivo();
		this.dataPartenza = pacchetto.getDataPartenza();
		this.hotel = hotel;
		this.voloAndata = voloA;
		this.voloRitorno = voloR;
		this.escursione = esc;
		this.nome = pacchetto.getNome();
		this.numeroPosti = pacchetto.getNumeroPosti();
		this.prezzoTotale = pacchetto.getPrezzo();
		
	}

	

	public int getIdPacchetti() {
		return this.idPacchetti;
	}

	public void setIdPacchetti(int idPacchetti) {
		this.idPacchetti = idPacchetti;
	}

	public Date getDataArrivo() {
		return this.dataArrivo;
	}

	public void setDataArrivo(Date dataArrivo) {
		this.dataArrivo = dataArrivo;
	}

	public Date getDataPartenza() {
		return this.dataPartenza;
	}

	public void setDataPartenza(Date dataPartenza) {
		this.dataPartenza = dataPartenza;
	}

	public String getNome() {
		return this.nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public int getNumeroPosti() {
		return this.numeroPosti;
	}

	public void setNumeroPosti(int numeroPosti) {
		this.numeroPosti = numeroPosti;
	}

	public int getPrezzoTotale() {
		return this.prezzoTotale;
	}

	public void setPrezzoTotale(int prezzoTotale) {
		this.prezzoTotale = prezzoTotale;
	}

	public Escursione getEscursioneBean() {
		return this.escursione;
	}

	public void setEscursioneBean(Escursione escursioneBean) {
		this.escursione = escursioneBean;
	}

	public Hotel getHotelBean() {
		return this.hotel;
	}

	public void setHotelBean(Hotel hotelBean) {
		this.hotel = hotelBean;
	}

	public Volo getVolo1() {
		return this.voloAndata;
	}

	public void setVolo1(Volo volo1) {
		this.voloAndata = volo1;
	}

	public Volo getVolo2() {
		return this.voloRitorno;
	}

	public void setVolo2(Volo volo2) {
		this.voloRitorno = volo2;
	}

	

	public String getCitta() {
		return citta;
	}



	public void setCitta(String citta) {
		this.citta = citta;
	}

}